<!DOCTYPE html>
<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
  <meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport">
  <meta name="description" content="JinYan&#39;s blog">
  <meta name="keyword" content="hexo-theme, vuejs">
  
    <link rel="shortcut icon" href="/blog/css/images/logo.jpg">
  
  <title>
    
      Linux命令-nmap | SanYuanEmpire
    
  </title>
  <link href="//cdn.bootcss.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">
  <link href="//cdn.bootcss.com/nprogress/0.2.0/nprogress.min.css" rel="stylesheet">
  <link href="//cdn.bootcss.com/highlight.js/9.12.0/styles/tomorrow.min.css" rel="stylesheet">
  <link rel="stylesheet" href="/blog/css/style.css">
<link rel="stylesheet" href="/blog/css/plugins/gitment.css">
  <script src="//cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
  <script src="//cdn.bootcss.com/geopattern/1.2.3/js/geopattern.min.js"></script>
  <script src="//cdn.bootcss.com/nprogress/0.2.0/nprogress.min.js"></script>
  <script src="/blog/js/qrious.js"></script>
<script src="/blog/js/gitment.js"></script>
  
  
    <!-- MathJax support START -->
    <script type="text/x-mathjax-config">
      MathJax.Hub.Config({
        tex2jax: {
          inlineMath: [ ['$','$'], ["\\(","\\)"]  ],
          processEscapes: true,
          skipTags: ['script', 'noscript', 'style', 'textarea', 'pre', 'code']
        }
      });
    </script>

    <script type="text/x-mathjax-config">
      MathJax.Hub.Queue(function() {
        var all = MathJax.Hub.getAllJax(), i;
        for (i=0; i < all.length; i += 1) {
          all[i].SourceElement().parentNode.className += ' has-jax';
        }
      });
    </script>
    <script type="text/javascript" src="//cdn.bootcss.com/mathjax/2.7.1/latest.js?config=TeX-AMS-MML_HTMLorMML"></script>
    <!-- MathJax support END -->
  


</head>
<div class="wechat-share">
  <img src="/css/images/logo.jpg" />
</div>

  <body>
    <header class="header fixed-header">
  <div class="header-container">
    <a class="home-link" href="/blog/">
      <div class="logo"></div>
      <span>SanYuanEmpire</span>
    </a>
    <ul class="right-list">
      
        <li class="list-item">
          
            <a href="/blog/" class="item-link">Home</a>
          
        </li>
      
        <li class="list-item">
          
            <a href="/blog/archives/" class="item-link">Archives</a>
          
        </li>
      
    </ul>
    <div class="menu">
      <span class="icon-bar"></span>
      <span class="icon-bar"></span>
      <span class="icon-bar"></span>
    </div>
    <div class="menu-mask">
      <ul class="menu-list">
        
          <li class="menu-item">
            
              <a href="/blog/" class="menu-link">Home</a>
            
          </li>
        
          <li class="menu-item">
            
              <a href="/blog/archives/" class="menu-link">Archives</a>
            
          </li>
        
      </ul>
    </div>
  </div>
</header>

    <div id="article-banner">
  <h2>Linux命令-nmap</h2>
  <p class="post-date">2018-09-04</p>
  <div class="arrow-down">
    <a href="javascript:;"></a>
  </div>
</div>
<main class="app-body flex-box">
  <!-- Article START -->
  <article class="post-article">
    <section class="markdown-content"><blockquote>
<p>首先，简单列举一个扫描端口的运用<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">nmap –sT –sV –p80,443,8080 –P0 –n IP</span><br><span class="line">说明：</span><br><span class="line">-sT，说明是 TCP 协议；</span><br><span class="line">-sV，说明是显示详情</span><br><span class="line">-p 后面跟指定的扫描端口；</span><br><span class="line">-n 后面对应的 IP</span><br></pre></td></tr></table></figure></p>
</blockquote>
<h1 id="简介"><a href="#简介" class="headerlink" title="简介"></a>简介</h1><blockquote>
<p>nmap 是一个网络连接端扫描 软件 ，用来扫描网上电脑开放的网络连接端。确定哪些 服务 运行在哪些连接端，并且推断计算机运行哪个 操作系统 （这是亦称 fingerprinting）。它是网络管理员必用的 软件 之一，以及用以评估网络系统保安。<br>正如大多数被用于网络安全的工具，nmap 也是不少黑客及骇客（又称脚本小子）爱用的工具 。系统管理员可以利用 nmap 来探测工作环境中未经批准使用的 服务 器，但是黑客会利用 nmap 来搜集目标电脑的网络设定，从而计划攻击的方法。</p>
</blockquote>
<h1 id="功能"><a href="#功能" class="headerlink" title="功能"></a>功能</h1><blockquote>
<p>其基本功能有三个，一是探测一组主机是否在线；其次是扫描 主机端口， 嗅探 所提供的网络 服务 ；还可以推断主机所用的 操作系统 。<br>Nmap 可用于扫描仅有两个节点的 LAN，直至 500 个节点以上的网络。Nmap 还允许用户定制扫描技巧。通常，一个简单的使用 ICMP 协议 的 ping 操作可以满足一般 需求 ；也可以深入 探测 UDP 或者 TCP 端口，直至 主机 所 使用的 操作系统 ；还可以将所有探测结果记录到各种格式的日志中， 供进一步分析操作。<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br></pre></td><td class="code"><pre><span class="line">进行 ping 扫描，打印出对扫描做出响应的 主机 , 不做进一步测试 (如 端口扫描 或者 操作系统探测)：</span><br><span class="line">nmap -sP 192.168.1.0/24</span><br><span class="line">仅列出指定网络上的每台 主机 ，不发送任何 报文 到目标 主机 ：</span><br><span class="line">nmap -sL 192.168.1.0/24</span><br><span class="line">探测 目标 主机 开放的端口，可以指定一个以逗号分隔的端口列表 (如 - PS22，23，25，80)：</span><br><span class="line">nmap -PS 192.168.1.234</span><br><span class="line">使用 UDP ping 探测 主机：</span><br><span class="line">nmap -PU 192.168.1.0/24</span><br><span class="line">使用频率最高的扫描选项：SYN 扫描, 又称为半开放扫描，它不打开一个完全的 TCP 连接，执行得很快：</span><br><span class="line">nmap -sS 192.168.1.0/24</span><br><span class="line">当 SYN 扫描不能用时，TCP Connect() 扫描就是默认的 TCP 扫描：</span><br><span class="line">nmap -sT 192.168.1.0/24</span><br><span class="line">UDP 扫描用 - sU 选项, UDP 扫描发送空的 (没有数据)UDP 报头到每个目标端口:</span><br><span class="line">nmap -sU 192.168.1.0/24</span><br><span class="line">确定目标机支持哪些 IP 协议 (TCP，ICMP，IGMP 等):</span><br><span class="line">nmap -sO 192.168.1.19</span><br><span class="line">探测目标 主机 的 操作系统 ：</span><br><span class="line">nmap -O 192.168.1.19</span><br><span class="line">nmap -A 192.168.1.19</span><br><span class="line">另外，nmap 官方文档中的例子：</span><br><span class="line">nmap -v scanme.</span><br><span class="line">这个选项扫描 主机 scanme 中 所有的保留 TCP 端口。选项 - v 启用细节模式。</span><br><span class="line">nmap -sS -O scanme./24</span><br><span class="line">进行秘密 SYN 扫描，对象为主机 Saznme 所在的 “C 类” 网段 的 255 台主机。同时尝试确定每台工作主机的 操作系统 类型。因为进行 SYN 扫描 和 操作系统 检测，这个扫描需要有根权限。</span><br><span class="line">nmap -sV -p 22，53，110，143，4564 198.116.0-255.1-127</span><br><span class="line">进行 主机 列举和 TCP 扫描，对象为 B 类 188.116 网段 中 255 个 8 位子网。这 个测试用于确定系统是否运行了 sshd、DNS、imapd 或 4564 端口。如果这些端口 打开，将使用版本检测来确定哪种应用在运行。</span><br><span class="line">nmap -v -iR 100000 -P0 -p 80</span><br><span class="line">随机选择 100000 台 主机 扫描是否运行 Web 服务 器 (80 端口)。由起始阶段 发送 探测 报文 来确定 主机 是否工作非常浪费时间，而且只需探测主机的一个端口，因 此使用 - P0 禁止对主机列表。</span><br><span class="line">nmap -P0 -p80 -oX logs/pb-port80scan.xml -oG logs/pb-port80scan.gnmap 216.163.128.20/20</span><br><span class="line">扫描 4096 个 IP 地址，查找 Web 服务 器 (不 ping)，将结果以 Grep 和 XML 格式保存。</span><br><span class="line">host -l | cut -d -f 4 | nmap -v -iL -</span><br><span class="line">进行 DNS 区域传输，以发现中的 主机 ，然后将 IP 地址提供给 Nmap。上述命令用于 GNU/Linux -- 其它系统进行区域传输时有不同的命令。</span><br><span class="line">其他选项：</span><br><span class="line">-p (只扫描指定的端口)</span><br><span class="line">单个端口和用 连字符 表示的端口范 围 (如 1-1023) 都可以。当既扫描 TCP 端口又扫描 UDP 端口时，可以通过在 端口号 前加上 T: 或者 U: 指定协议。 协议 限定符 一直有效直到指定另一个。 例如，参数 -p U:53，111，137，T:21-25，80，139，8080 将扫描 UDP 端口 53，111，和 137，同时扫描列出的 TCP 端口。</span><br><span class="line">-F (快速 (有限的端口) 扫描)</span><br></pre></td></tr></table></figure></p>
</blockquote>
<h1 id="使用"><a href="#使用" class="headerlink" title="使用"></a>使用</h1><h2 id="常用扫描类型"><a href="#常用扫描类型" class="headerlink" title="常用扫描类型"></a>常用扫描类型</h2><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line">解开 Nmap 命令行版的压缩包之后，进入 Windows 的命令控制台，再转到安装 Nmap 的目录（如果经常要用 Nmap，最好把它的路径加入到 PATH 环境变量 ）。不带任何命令行参数</span><br><span class="line">。GUI 版的功能基本上和命令行版本一样，鉴于许多人更喜欢用命令行版本，本文后面的说明就以命令行版本为主。 下面是 Nmap 支持的四种最基本的扫描方式：</span><br><span class="line">⑴ TCP connect() 端口扫描 （-sT 参数）。</span><br><span class="line">⑵ TCP 同步（SYN） 端口扫描 （-sS 参数）。</span><br><span class="line">⑶ UDP 端口扫描 （-sU 参数）。</span><br><span class="line">⑷ Ping 扫描（-sP 参数）。</span><br><span class="line">如果要勾画一个网络的整体情况，Ping 扫描和 TCP SYN 扫描最为实用。Ping 扫描通过发送 ICMP （Internet Control Message Protocol，Internet 控制消息协议）回应请求数据包和 TCP 应答（Acknowledge，简写 ACK）数据包，确定主机的状态，非常适合于检测指定 网段 内正在运行的主机数量。</span><br><span class="line">TCP SYN 扫描一下子不太好理解，但如果将它与 TCP connect() 扫描比较，就很容易看出这种扫描方式的特点。在 TCP connect() 扫描中，扫描器利用 操作系统 本身的系统调用打开一个完整的 TCP 连接——也就是说，扫描器打开了两个 主机 之间的完整握手过程（SYN，SYN-ACK，和 ACK）。一次完整执行的握手过程表明远程 主机 端口是打开的。</span><br><span class="line">TCP SYN 扫描创建的是半打开的连接，它与 TCP connect() 扫描的不同之处在于，TCP SYN 扫描发送的是复位（RST）标记而不是结束 ACK 标记（即，SYN，SYN-ACK，或 RST）：如果远程 主机 正在监听且端口是打开的，远程主机用 SYN-ACK 应答，Nmap 发送一个 RST；如果远程主机的端口是关闭的，它的应答将是 RST，此时 Nmap 转入下一个端口。</span><br></pre></td></tr></table></figure>
</section>
    <!-- Tags START -->
    
    <!-- Tags END -->
    <!-- NAV START -->
    
  <div class="nav-container">
    <!-- reverse left and right to put prev and next in a more logic postition -->
    
      <a class="nav-left" href="/blog/2018/09/04/企业网络安全管理/">
        <span class="nav-arrow">← </span>
        
          企业网络安全管理
        
      </a>
    
    
      <a class="nav-right" href="/blog/2018/09/04/wireshark-过滤器/">
        
          wireshark-过滤器
        
        <span class="nav-arrow"> →</span>
      </a>
    
  </div>

    <!-- NAV END -->
    
      <!-- No Comment -->
    
  </article>
  <!-- Article END -->
  <!-- Catalog START -->
  
    <aside class="catalog-container">
  <div class="toc-main">
    <strong class="toc-title">Catalog</strong>
    
      <ol class="toc-nav"><li class="toc-nav-item toc-nav-level-1"><a class="toc-nav-link" href="#简介"><span class="toc-nav-text">简介</span></a></li><li class="toc-nav-item toc-nav-level-1"><a class="toc-nav-link" href="#功能"><span class="toc-nav-text">功能</span></a></li><li class="toc-nav-item toc-nav-level-1"><a class="toc-nav-link" href="#使用"><span class="toc-nav-text">使用</span></a><ol class="toc-nav-child"><li class="toc-nav-item toc-nav-level-2"><a class="toc-nav-link" href="#常用扫描类型"><span class="toc-nav-text">常用扫描类型</span></a></li></ol></li></ol>
    
  </div>
</aside>
  
  <!-- Catalog END -->
</main>

<script>
  (function () {
    var url = 'git@gitee.com:sanyuanempire/blog.git/2018/09/04/Linux命令-nmap/';
    var banner = ''
    if (banner !== '' && banner !== 'undefined' && banner !== 'null') {
      $('#article-banner').css({
        'background-image': 'url(' + banner + ')'
      })
    } else {
      $('#article-banner').geopattern(url)
    }
    $('.header').removeClass('fixed-header')

     // error image
    $(".markdown-content img").on('error', function() {
      $(this).attr('src', 'http://file.muyutech.com/error-img.png')
      $(this).css({
        'cursor': 'default'
      })
    })

    // zoom image
    $(".markdown-content img").on('click', function() {
      var src = $(this).attr('src')
      if (src !== 'http://file.muyutech.com/error-img.png') {
        var imageW = $(this).width()
        var imageH = $(this).height()
        
        var zoom = ($(window).width() * 0.95 / imageW).toFixed(2)
        zoom = zoom < 1 ? 1 : zoom
        zoom = zoom > 2 ? 2 : zoom
        var transY = (($(window).height() - imageH) / 2).toFixed(2)

        $('body').append('<div class="image-view-wrap"><div class="image-view-inner"><img src="'+ src +'" /></div></div>')
        $('.image-view-wrap').addClass('wrap-active')
        $('.image-view-wrap img').css({
          'width': `${imageW}`,
          'transform': `translate3d(0, ${transY}px, 0) scale3d(${zoom}, ${zoom}, 1)`
        })
        $('html').css('overflow', 'hidden')

        $('.image-view-wrap').on('click', function() {
          $(this).remove()
          $('html').attr('style', '')
        })
      }
    })

    // qrcode
    var qr = new QRious({
      element: document.getElementById('share-qrcode'),
      value: document.location.href
    });

    // gitment
    var gitmentConfig = "";
    if (gitmentConfig !== 'undefined') {
      var gitment = new Gitment({
        id: "Linux命令-nmap",
        owner: "",
        repo: "",
        oauth: {
          client_id: "",
          client_secret: ""
        },
        theme: {
          render(state, instance) {
            const container = document.createElement('div')
            container.lang = "en-US"
            container.className = 'gitment-container gitment-root-container'
            container.appendChild(instance.renderHeader(state, instance))
            container.appendChild(instance.renderEditor(state, instance))
            container.appendChild(instance.renderComments(state, instance))
            container.appendChild(instance.renderFooter(state, instance))
            return container;
          }
        }
      })
      gitment.render(document.getElementById('comments'))
    }
  })();
</script>

<script>
  var disqus_shortname = '';
  
  var disqus_url = 'git@gitee.com:sanyuanempire/blog.git/2018/09/04/Linux命令-nmap/';
  
  (function(){
    var dsq = document.createElement('script');
    dsq.type = 'text/javascript';
    dsq.async = true;
    dsq.src = '//go.disqus.com/embed.js';
    (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
  })();
</script>

    <div class="scroll-top">
  <span class="arrow-icon"></span>
</div>
    <footer class="app-footer">
  <p class="copyright">
    &copy; 2018 | Proudly powered by <a href="https://sanyuanempire.gitee.io/blog" target="_blank">JinYan</a>
    <br>
    Theme by <a href="https://sanyuanempire.gitee.io/blog">JinYan</a>
  </p>
</footer>

<script>
  function async(u, c) {
    var d = document, t = 'script',
      o = d.createElement(t),
      s = d.getElementsByTagName(t)[0];
    o.src = u;
    if (c) { o.addEventListener('load', function (e) { c(null, e); }, false); }
    s.parentNode.insertBefore(o, s);
  }
</script>
<script>
  async("//cdn.bootcss.com/fastclick/1.0.6/fastclick.min.js", function(){
    FastClick.attach(document.body);
  })
</script>

<script>
  var hasLine = 'true';
  async("//cdn.bootcss.com/highlight.js/9.12.0/highlight.min.js", function(){
    $('figure pre').each(function(i, block) {
      var figure = $(this).parents('figure');
      if (hasLine === 'false') {
        figure.find('.gutter').hide();
      }
      var lang = figure.attr('class').split(' ')[1] || 'code';
      var codeHtml = $(this).html();
      var codeTag = document.createElement('code');
      codeTag.className = lang;
      codeTag.innerHTML = codeHtml;
      $(this).attr('class', '').empty().html(codeTag);
      figure.attr('data-lang', lang.toUpperCase());
      hljs.highlightBlock(block);
    });
  })
</script>
<!-- Baidu Tongji -->

<script src="/blog/js/script.js"></script>

  </body>
</html>